﻿public partial class Solution
{
    public int RomanToInt(string s)
    {
        Dictionary<string, int> roman = new Dictionary<string, int>()
        {
            { "I", 1 },
            { "IV", 4 },
            { "V", 5 },
            { "IX", 9 },
            { "X", 10 },
            { "XL", 40 },
            { "L", 50 },
            { "XC", 90 },
            { "C", 100 },
            { "CD", 400 },
            { "D", 500 },
            { "CM", 900 },
            { "M", 1000 },
        };
        int result = 0;
        for (int i = 0; i < s.Length; i++)
        {
            // 当前处理的罗马数字
            string romanNum = "";
            // 可以取出两个字符尝试作为罗马数字
            if (i <= s.Length - 2)
            {
                romanNum = s.Substring(i, 2);
            }
            // 确实是两个字符的罗马数字
            if (roman.ContainsKey(romanNum))
            {
                i++;
            }
            // 反之，只是一个字符的罗马数字
            else
            {
                romanNum = s.Substring(i, 1);
            }
            result += roman[romanNum];
        }
        return result;
    }
}